#include<bits/stdc++.h>
#define M 5001
using namespace std;
mt19937_64 rnd(time(0));
int n,a[300001];
long long h[300001],base[300001],pre[300001];
inline int read()
{
int k=0,f=0;char c=getchar();
for(;!isdigit(c);c=getchar()) f|=c=='-';
for(;isdigit(c);c=getchar()) k=(k<<1)+(k<<3)+(c^48);
return f?-k:k;
}
void solve(){
int n; n=read();
for(int i = 1; i <= n; ++i){
a[i]=read();
h[i] = rnd();
base[i] = base[i - 1] ^ h[i];
}
int ans = 0;
for(int i = 1, j = 1; i <= n; ++i){
pre[i] = pre[i - 1] ^ h[a[i]];
if(a[i] == 1) j = 1, ++ans;
else{
j = max(j, a[i]);
if(i >= j && (pre[i] ^ pre[i - j]) == base[j]) ++ans;
}
}
reverse(a + 1, a + n + 1);
for(int i = 1, j = 1; i <= n; ++i){
pre[i] = pre[i - 1] ^ h[a[i]];
if(a[i] == 1) j = 1;
else{
j = max(j, a[i]);
if(i >= j && (pre[i] ^ pre[i - j]) == base[j]) ++ans;
}
}
printf("%d\n",ans);
}
int main()
{
solve();
return 0;
}
1614B - Divan and a New Project | 791A - Bear and Big Brother |
1452A - Robot Program | 344A - Magnets |
96A - Football | 702B - Powers of Two |
1036A - Function Height | 443A - Anton and Letters |
1478B - Nezzar and Lucky Number | 228A - Is your horseshoe on the other hoof |
122A - Lucky Division | 1611C - Polycarp Recovers the Permutation |
432A - Choosing Teams | 758A - Holiday Of Equality |
1650C - Weight of the System of Nested Segments | 1097A - Gennady and a Card Game |
248A - Cupboards | 1641A - Great Sequence |
1537A - Arithmetic Array | 1370A - Maximum GCD |
149A - Business trip | 34A - Reconnaissance 2 |
59A - Word | 462B - Appleman and Card Game |
1560C - Infinity Table | 1605C - Dominant Character |
1399A - Remove Smallest | 208A - Dubstep |
1581A - CQXYM Count Permutations | 337A - Puzzles |